﻿using Model.BusinessModel;
using Model.BusinessModel.InPut;
using Model.BusinessModel.OutPut;
using Model.DomainModel;
using Utility;

namespace DomainService.IService
{
    /// <summary>
    /// 表单服务接口
    /// </summary>
    public interface IFormService
    {
        /// <summary>
        /// 新增表单数据
        /// </summary>
        /// <param name="examineForm">实体模型</param>
        ReceiveStatus Insert(Form examineForm);

        /// <summary>
        /// 更新表单信息
        /// </summary>
        /// <param name="examineForm">实体模型</param>
        /// <returns></returns>
        ReceiveStatus Update(Form examineForm);

        /// <summary>
        /// 获取所有表单
        /// </summary>
        /// <param name="pageResultModel">分页参数模型</param>
        /// <returns></returns>
        PageResultModel<FormOutPut> GetAllForm(PageResultModel pageResultModel);

        /// <summary>
        /// 根据主键获取表单
        /// </summary>
        /// <param name="formId">表单主键</param>
        /// <returns></returns>
        ReceiveStatus<Form> GetFormByFormId(string formId);

        /// <summary>
        /// 根据表单主键获取字段
        /// </summary>
        /// <param name="formId">表单kye</param>
        /// <returns>返回表单字段</returns>
        ReceiveStatus<List<SelectOutPut>> GetFormField(string formId);

        /// <summary>
        /// 根据部门ID,获取表单
        /// </summary>
        /// <param name="departmentId">部门id</param>
        /// <returns></returns>
        ReceiveStatus<List<TreeOutPut>> GetFormByDepId(string departmentId);

        /// <summary>
        /// 更新数据状态
        /// </summary>
        /// <param name="input">输入模型</param>
        /// <returns></returns>
        ReceiveStatus UpdateFormDataState(UpdateDataStateInput input);

    }
}
